//////////////////////////////////////////////////////////////////////
// A list of renderable objects interface class
// - Defines the interface for a list of renderable objects
//
//////////////////////////////////////////////////////////////////////
#pragma once
#include "..\Gears\CdiObject.h"
#include "CdiRenderBase.h"

class CdiRenderList : public CdiObject
{

public:
  CdiRenderList();
  ~CdiRenderList();

public:
  // Public Methods                     
  ////////////////////////////////////////

  // Render all the objects in the list
  ////////////////////////////////////////
  virtual bool RenderAll(LPDIRECT3DDEVICE9 pDevice) = 0;

  // Render a specific Item
  ////////////////////////////////////////
  virtual bool Render( int item, LPDIRECT3DDEVICE9 pDevice ) = 0;

  // Get the Item Count
  ////////////////////////////////////////
  virtual const int GetItemCount() = 0;

  // Get a specific Item
  ////////////////////////////////////////
  virtual CdiRenderBase* GetItem( int itemIndex ) = 0;

  // Add an object
  ////////////////////////////////////////
  virtual bool AddObject( CdiRenderBase* object ) = 0;

  // Remove an object
  ////////////////////////////////////////
  virtual bool RemoveObject( CdiRenderBase* object ) = 0;

  // Remove an object
  ////////////////////////////////////////
  virtual bool RemoveObject( int index ) = 0;
};